package com.qinglei.recoup.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.qinglei.recoup.common.domain.CommonRes;
import com.qinglei.recoup.common.domain.IotRadarStatusData;
import com.qinglei.recoup.common.domain.Tree;
import com.qinglei.recoup.system.domain.Bed;
import com.qinglei.recoup.system.domain.Radar;
import com.qinglei.recoup.system.domain.RadarStatisticsBO;
import com.qinglei.recoup.system.pojo.*;

import java.util.List;

/**
 * @author zxy
 */
public interface RadarService extends IService<Radar> {

    RadarBedPageVO showPageRadar(RadarSearchParam pageParam);

    /**
     * 删除监测仪
     */
    CommonRes delRadar(Integer id);

    /**
     * 查询雷达统计信息
     *
     * @return
     */
    RadarStatisticsBO selectRadarStatistics();

    /**
     * 更新雷达在线状态
     * @param sn
     */
    void updateOnlineStatus(String sn);

    /**
     * 更新雷达在线状态
     * @param sn
     */
    void updateNetworkStatus(String sn);

    String[] getOrganizationNameBySN();

    Radar selectOneNotTenant(String snCode);


    /**
     * 更新雷达在线状态 跌倒设备
     * @param sn
     */
    void updateOnlineStatusDownData(String sn);

    /**
     * 根据sn修改雷达版本号和状态
     */
    void updateVersionAndStatusBySn(String sn , String version , Integer status);


    /**
     * 管理员端获取树形结构图
     * @return
     */
    Tree<Bed> getFallDownTree();

    /***
     * 设置跌倒设备参数
     * @param fallDownAttrParm
     * @return
     */
    CommonRes<Object> setFallDownAttr(FallDownAttrParm fallDownAttrParm);
    /***
     * 批量设置跌倒设备参数
     * @param fallDownAttrParm
     * @return
     */
    CommonRes<Object> batchSetFallDownAttr(FallDownAttrParm fallDownAttrParm);

    /**
     * 查询
     * @param sn    sn号
     * @return
     */
    CommonRes<FallDownAttrVo> selectFallDownAttr(String sn);


    CommonRes<GetBatchFallAttrVo> selecBatchtFallDownAttr(String requestId);



    void updateProductKey();


    void updateProductKeyBySn(String sn,String productKey);


    List<Radar> selectBySnList(List<String> snList);


    /**
     * 更新雷达真实在线状态
     * @param sn
     */
    void updateRealOnlineStatus(IotRadarStatusData iotRadarStatusData);

    /**
     * 查询真实设备在线状态
     * @param sn
     * @return
     */
    Boolean selectRealOnlineStatus(String sn);

}
